
package com.zed.api.persistence.core;

import java.net.URL;
import java.util.List;

/**
 * {@link StoreSchema}, 存储模型
 *
 * @author Zed
 */
public interface StoreSchema {

    static final String CATEGORY_FILE = "file";
    static final String CATEGORY_JDBC = "jdbc";
    static final String CATEGORY_MONGODB = "mongodb";

    /**
     * 分类，参见的有文件、JDBC、mongodb等等
     *
     * @return {@link String}
     */
    String getCategory();

    /**
     * 获取变量值
     *
     * @param name {@link String},变量名称
     * @return {@link String}
     */
    String getVariable(String name);

    /**
     * 获取构建模型的命令
     *
     * @return {@link List}
     */
    List<String> getBuildCommands();

    /**
     * 获取初始化数据的命令
     *
     * @return {@link List}
     */
    List<String> getInitDataCommands();

    /**
     * 从{@code fileName}中加载初始化数据的命令
     *
     * @param url {@link URL}, 命令文件的路径
     * @return {@link List}
     */
    List<String> getInitDataCommands(URL url);

    /**
     * 获取测试数据的命令
     *
     * @return {@link List}
     */
    List<String> getTestDataCommands();
}
